the code executed to perform a given operation is determined
of the message). There may be several different classes of
objects which can receive a given message. An expression may
denote an object which may have more than one possible class
and that class can only be determined at run time. New
classes may be created that can receive a particular message,
without changing (or recompiling) the code which sends the
message. An class may be created that can receive any set of
existing messages.
One important reason for having dynamic binding is that it
provides a mechanism for selecting between alternatives which
is arguably more robust than explicit selection by
added, or an existing subclass changes, the necessary
modifications are localised: you don't have incomplete
conditionals and broken patterns scattered all over the
program.